package com;

import com.config.App;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

/**
 * @author: 一个小菜逼
 * @Date: 2020/4/28
 *
 * web项目实现WebApplicationInitializer接口，Tomcat启动时会自动进行调用
 */
public class SpringWebApplication implements WebApplicationInitializer {

    public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
        //spirngMVC的IOC容器
        AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
        ac.register(App.class);
        DispatcherServlet dispatcherServlet = new DispatcherServlet(ac);

        //servletContext应该算是servlet的容器，应该是所有的servlet都可以从这里面拿出来
        ServletRegistration.Dynamic app = servletContext.addServlet("app", dispatcherServlet);


        //设置Tomcat启动的时候就初始化servlet容器，当然DispatcherServlet也是一个servlet
        //只不过是坐了进一步的封装；若不设置，默认是第一次请求过来的时候进行初始化
        //servlet进行业务处理之前，会先自动调用其中的init方法，这个是servlet生命周期里面的知识点
        //一些列的初始化会在init方法中执行
        app.setLoadOnStartup(1);
        //设置之后Tomcat启动的时候会打印这个
        //org.springframework.web.servlet.FrameworkServlet.initServletBean Initializing Servlet 'app'
        //org.springframework.web.servlet.FrameworkServlet.initServletBean Completed initialization in 1509 ms



        //设置拦截.do后缀的请求
        app.addMapping("*.do");

    }
}
